home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / util / misc / VMM_src.lha / VMM / shared_defs.i < prev    next >
Encoding:
Text File  |  1995-12-16  |  9.0 KB  |  348 lines

  1.     include "exec/types.i"
  2.     include "exec/tasks.i"
  3.     include "exec/alerts.i"
  4.  
  5. ARRAY        macro
  6. \1           equ   SOFFSET
  7. SOFFSET      set   SOFFSET+(\2*\3)
  8.              endm
  9.  
  10. TMP_STACKSIZE                   equ   700
  11.  
  12.  STRUCTURE TrapStruct,0
  13.     STRUCT   TS_Node,MLN_SIZE
  14.     APTR     TS_FaultTask
  15.     ULONG    TS_FaultAddress
  16.     LABEL    TS_RemFrameSize
  17.     APTR     TS_TopOfStackFrame
  18.     ARRAY    TS_TmpStack,1,TMP_STACKSIZE
  19.     STRUCT   TS_TmpStackSwap,StackSwapStruct_SIZEOF
  20.     APTR     TS_IOPacket
  21.     APTR     TS_SeekPacket
  22.     APTR     TS_FD
  23.     APTR     TS_PageDescrAddr
  24.     APTR     TS_TableDescrAddr
  25.     ULONG    TS_PhysAddr
  26.     UWORD    TS_WakeupSignal
  27.     UWORD    TS_FramesRemoved
  28.     ULONG    TS_RemFrameFlags
  29.     LABEL    TS_SIZE
  30.  
  31.  
  32.  
  33. * Following are the only constants which should be changed for another
  34. * configuration:
  35. *
  36.  
  37.                                 IFD   PAGE4K
  38. PAGESIZE                        equ   4096
  39.                                 ELSE
  40.                                 IFD   PAGE8K
  41. PAGESIZE                        equ   8192
  42.                                 ELSE
  43. PAGESIZE                        equ   4096
  44.                                 ENDC
  45.                                 ENDC
  46.  
  47.                                 IFND  NUM_PTR_TABLES
  48. NUM_PTR_TABLES                  equ   16
  49.                                 ENDC
  50.  
  51.                                 IFND  MAX_FAULTS
  52. MAX_FAULTS                      equ   20
  53.                                 ENDC
  54.  
  55. *************************** Up to here ************************
  56.  
  57. POINTERS_PER_TABLE              equ   128
  58.  
  59.                                 IFEQ  PAGESIZE-4096
  60. PAGESIZESHIFT                   equ   12
  61. PAGES_PER_TABLE                 equ   64
  62.                                 ELSE
  63. PAGESIZESHIFT                   equ   13
  64. PAGES_PER_TABLE                 equ   32
  65.                                 ENDC
  66.  
  67. MAX_TABLES                      equ   (POINTERS_PER_TABLE*NUM_PTR_TABLES)
  68. MAX_TABLE_PAGES                 equ   (PAGES_PER_TABLE*MAX_TABLES/PAGESIZE)
  69.  
  70. * These are the codes set by VMM when building (parts of) an MMU table
  71. TABLE_RESIDENT                  equ   2
  72. PAGE_RESIDENT                   equ   1
  73. INVALID                         equ   0
  74.  
  75. WRITEPROTECT                    equ   $04
  76. USED                            equ   $08
  77. MODIFIED                        equ   $10
  78.  
  79. * Bits for page descriptor
  80. CM_MASK                         equ   $60
  81.  
  82. ROOTINDEX      MACRO     * d0 (modified), d1 (scratch)
  83.                moveq     #25,d1
  84.                lsr.l     d1,d0
  85.                ENDM
  86.  
  87. POINTERINDEX   MACRO     * d0 (modified), d1 (scratch)
  88.                moveq     #18,d1
  89.                lsr.l     d1,d0
  90.                and.w     #$7f,d0
  91.                ENDM
  92.  
  93. PAGEINDEX      MACRO     * d0 (modified), d1 (scratch)
  94.                moveq     #PAGESIZESHIFT,d1
  95.                lsr.l     d1,d0
  96.                and.l     #(PAGES_PER_TABLE-1),d0
  97.                ENDM
  98.  
  99. PAGEADDR       MACRO     * reg (modified)
  100.                and.w     #~(PAGESIZE-1),\1
  101.                ENDM
  102.  
  103. PAGEOFFS       MACRO     * reg (modified)
  104.                and.l     #(PAGESIZE-1),\1
  105.                ENDM
  106.  
  107. * Structure for accessing the MMU registers
  108.  
  109.  STRUCTURE MMUState40,0
  110.     ULONG    MS40_URP
  111.     ULONG    MS40_SRP
  112.     ULONG    MS40_ITT0
  113.     ULONG    MS40_ITT1
  114.     ULONG    MS40_DTT0
  115.     ULONG    MS40_DTT1
  116.     ULONG    MS40_TC
  117.     LABEL    MS40_SIZE
  118.  
  119.  STRUCTURE MMUState30,0
  120.     ULONG    MS30_TC
  121.     ULONG    MS30_CRP_HI
  122.     ULONG    MS30_CRP_LO
  123.     ULONG    MS30_SRP_HI
  124.     ULONG    MS30_SRP_LO
  125.     ULONG    MS30_TT0
  126.     ULONG    MS30_TT1
  127.     LABEL    MS30_SIZE
  128.  
  129.  STRUCTURE HashEntry,0
  130.     APTR     HE_Name
  131.     APTR     HE_NextEntry
  132.     ULONG    HE_MinPublic
  133.     ULONG    HE_MinNonPublic
  134.     UBYTE    HE_Referenced
  135.     UBYTE    HE_HashIndex
  136.     UWORD    HE_NumLongsM1
  137.     LABEL    HE_SIZE
  138.  
  139.  
  140. HASHBITS       equ       6
  141. HASHTABSIZE    equ       (1<<HASHBITS)
  142. HASH_VAL       MACRO     * \1 register to compute hash value in
  143.                and.w     #$1f8,\1
  144.                lsr.w     #3,\1
  145.                ENDM
  146.  
  147.  STRUCTURE CxParams,0
  148.     APTR     CP_CxPort
  149.     APTR     CP_Broker
  150.     APTR     CP_GUIFilter
  151.     APTR     CP_EnableFilter
  152.     APTR     CP_DisableFilter
  153.     APTR     CP_PrefsPath
  154.     APTR     CP_ConfigPath
  155.     BOOL     CP_VMEnable
  156.     BOOL     CP_ForceOverwrite
  157.     LABEL    CP_SIZE
  158.  
  159. APPEAR_ID    EQU    0
  160. ENABLE_ID    EQU    1
  161. DISABLE_ID   EQU    2
  162.  
  163.  
  164.  STRUCTURE VMMsg,0
  165.     STRUCT   VMM_VMMessage,MN_SIZE
  166.     APTR     VMM_VMSender
  167.     UWORD    VMM_VMCommand
  168.     * If the reply signal is zero, it means the receiver should free this
  169.     * message.
  170.     UWORD    VMM_ReplySignal
  171.  
  172.     LABEL    VMM_VMHeader
  173.     LABEL    VMM_FreeAddress
  174.     LABEL    VMM_PageAddress
  175.     LABEL    VMM_StartupParams
  176.     LABEL    VMM_UsageList
  177.     LABEL    VMM_Config
  178.     LABEL    VMM_NewWriteBuffer
  179.     ULONG    VMM_VMSize
  180.  
  181.     LABEL    VMM_VMSema
  182.     LABEL    VMM_FreeSize
  183.     LABEL    VMM_NewWriteBufferSize
  184.     ULONG    VMM_VMFree
  185.  
  186.     LABEL    VMM_MLName
  187.     ULONG    VMM_Faults
  188.     ULONG    VMM_PagesWritten
  189.     ULONG    VMM_PagesRead
  190.     ULONG    VMM_Frames
  191.     ULONG    VMM_PagesUsed
  192.     ULONG    VMM_PageSize
  193.     ULONG    VMM_TrapStructsFree
  194.  
  195.     LABEL    VMM_SIZE
  196.  
  197.  
  198. VMCMD_FirstCommand              equ   1468
  199. VMCMD_AskAllocMem               equ   (VMCMD_FirstCommand+0)
  200. VMCMD_QuitAll                   equ   (VMCMD_FirstCommand+1)
  201. VMCMD_InitReady                 equ   (VMCMD_FirstCommand+2)
  202. VMCMD_InitFailed                equ   (VMCMD_FirstCommand+3)
  203. VMCMD_AskStat                   equ   (VMCMD_FirstCommand+4)
  204. VMCMD_ReqMemHeader              equ   (VMCMD_FirstCommand+5)
  205. VMCMD_FreePages                 equ   (VMCMD_FirstCommand+6)
  206. VMCMD_LockPage                  equ   (VMCMD_FirstCommand+7)
  207. VMCMD_UnlockAllPages            equ   (VMCMD_FirstCommand+8)
  208. VMCMD_NewConfig                 equ   (VMCMD_FirstCommand+9)
  209. VMCMD_Startup                   equ   (VMCMD_FirstCommand+10)
  210. VMCMD_EnableVM                  equ   (VMCMD_FirstCommand+11)
  211. VMCMD_DisableVM                 equ   (VMCMD_FirstCommand+12)
  212. VMCMD_AskVMUsage                equ   (VMCMD_FirstCommand+13)
  213. VMCMD_AskConfig                 equ   (VMCMD_FirstCommand+14)
  214. VMCMD_NewWriteBuffer            equ   (VMCMD_FirstCommand+15)
  215.  
  216. NoTrapStructsAlertNum           equ   (AT_DeadEnd+AO_Unknown+AN_Unknown)
  217.  
  218. ERR_NOERROR                     equ   0
  219. ERR_CONTINUE                    equ   1
  220. ERR_FATAL                       equ   2
  221.  
  222.  STRUCTURE ForbiddenFreeStruct,0
  223.     APTR     FF_NextFree
  224.     APTR     FF_address
  225.     ULONG    FF_size
  226.     LABEL    FF_SIZE
  227.  
  228. *** Memory tracking ***
  229. TRACK_MAGIC EQU    'VMTR'
  230.  
  231.  STRUCTURE VMMConfig,0
  232.     ULONG CfgMagic
  233.     UWORD Version
  234.     UWORD Revision
  235.     ULONG MinMem
  236.     ULONG MaxMem
  237.     ULONG WriteBuffer
  238.     LONG  VMPriority
  239.     ULONG MemFlags
  240.     ULONG FileSize
  241.     ULONG MinVMAlloc
  242.     ULONG ZLeftEdge
  243.     ULONG ZTopEdge
  244.     ULONG UnZLeftEdge
  245.     ULONG UnZTopEdge
  246.     LONG  DefaultMinPublic
  247.     LONG  DefaultMinNonPublic
  248.     ULONG NumTaskEntries
  249.     UWORD PageDev
  250.     ARRAY EnableHotkey,1,80
  251.     ARRAY DisableHotkey,1,80
  252.     ARRAY PartOrFileName,1,80
  253.     BOOL  StatEnabled
  254.     BOOL  StatZoomed
  255.     BOOL  MemTracking
  256.     BOOL  PatchWB
  257.     BOOL  CacheZ2RAM
  258.     BOOL  DefaultCodePaging
  259.     UWORD DefaultDataPaging
  260.     BOOL  FastROM
  261.     ARRAY Reserved,9,2
  262.     LABEL VC_SIZE
  263.  
  264.  
  265.  
  266.  STRUCTURE LoadingTaskStruct,0
  267.     STRUCT   lt_Node,MLN_SIZE
  268.     APTR     LoadingTask
  269.     APTR     LoadfileName
  270.     LABEL    LT_SIZE
  271.  
  272.  
  273.  
  274. PAGEHANDLER_NAME   MACRO
  275.                    DC.B    "VMM_PageHandler",0
  276.                    ENDM
  277.  
  278. PREPAGER_NAME      MACRO
  279.                    DC.B    "VMM_PrePager",0
  280.                    ENDM
  281.  
  282. VM_MANAGER_NAME    MACRO
  283.                    DC.B    "VMM_Manager",0
  284.                    ENDM
  285.  
  286. STAT_NAME          MACRO
  287.                    DC.B    "VMM_Statistics",0
  288.                    ENDM
  289.  
  290. ERR_NAME           MACRO
  291.                    DC.B    "VMM_ErrorHandler",0
  292.                    ENDM
  293.  
  294. WBUF_ALLOC_NAME    MACRO
  295.                    DC.B    "VMM_WriteBufAllocator",0
  296.                    ENDM
  297.  
  298. GARBAGE_COLL_NAME  MACRO
  299.                    DC.B    "VMM_EmptyPageCollector",0
  300.                    ENDM
  301.  
  302. VMPORTNAME         MACRO
  303.                    DC.B    "VMM_Port",0
  304.                    ENDM
  305.  
  306. CXPORTNAME         MACRO
  307.                    DC.B    "VMM CX Port",0
  308.                    ENDM
  309.  
  310. STARTER_PORT_STD   MACRO
  311.                    DC.B    "VMM_Starter_Std",0
  312.                    ENDM
  313.  
  314. STARTER_PORT_LIB   MACRO
  315.                    DC.B    "VMM_Starter_Lib",0
  316.                    ENDM
  317.  
  318. PROGNAME           MACRO
  319.                    DC.B    "VMM",0
  320.                    ENDM
  321.  
  322. PROGPATH           MACRO
  323.                    DC.B    "L:VMM-Handler",0
  324.                    ENDM
  325.  
  326. LIBNAME            MACRO
  327.                    DC.B    "vmm.library",0
  328.                    ENDM
  329.  
  330. MEMLISTNAME        MACRO
  331.                    DC.B    "VMM Mem (paged)",0
  332.                    ENDM
  333.  
  334. CFG_FILEBASE       MACRO
  335.                    DC.B    "VMM.prefs",0
  336.                    ENDM
  337.  
  338. CFG_FILENAME       MACRO
  339.                    DC.B    "ENV:"
  340.                    CFG_FILEBASE
  341.                    ENDM
  342.  
  343. MMUCFG_FILENAME    MACRO
  344.                    DC.B    "ENV:VMM_MMU.config",0
  345.                    ENDM
  346.  
  347. EMERGENCY_SIGNAL   EQU     SIGB_SINGLE
  348.